iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0

接下來我準備加入生成式 AI,讓前面分析產生的結果可以有進一步的解釋和建議。由於目前 SleepAnalyzer 裡面的不同分析都是各自計算和輸出結果,因此需要先把這些結果整理成一份完整的 .txt 檔案,方便之後連結 Gemini API 使用。

這次新增的功能主要有兩個:
1.把分析結果變成完整的分析摘要
這裡學到可以使用到 StringBuilder
StringBuilder 適合用來把不同的字串接在一起,再透過 append() 把不同的分析結果依序加入,例如平均睡眠時數、不同睡眠品質的平均時數等等。最後再使用toString() 就能把整理完成的內容轉回 String,讓原本分散的分析結果變成一份完整的分析摘要。

2.把分析摘要輸出成 txt
這裡學到可以使用到 BufferedWriter 和 OutputStreamWriter。
OutputStreamWriter 負責把文字轉換成指定的編碼後寫入檔案,就像翻譯的功能;而 BufferedWriter 則類似於暫存區,可以先累積資料再批次送出,減少頻繁的輸出操作,提升寫入效率。最後write()將前面產生的分析摘要寫入 .txt。

由於我的分析結果包含中文,因此在第一次執行的時候檔案出現亂碼。
https://ithelp.ithome.com.tw/upload/images/20260922/20184235tbW3fo2f0F.png
後來才知道,檔案中的文字實際上會先經過編碼轉換成 byte。如果寫入與讀取檔案時使用的編碼方式不同,就可能導致原本的文字被錯誤解讀,進而產生亂碼。

解決方法:StandardCharsets.UTF_8
這樣可以明確指定使用 UTF-8 編碼寫入檔案,讓寫入與讀取的編碼方式相同,避免因為編碼不一致而產生亂碼。

最後成功產生可以正常顯示中文的分析摘要 .txt 檔案:
https://ithelp.ithome.com.tw/upload/images/20260922/201842357XehUQzoBF.png


上一篇
繼續視覺化:不同資料該怎麼畫?
下一篇
Gemini 為什麼會自己腦補?從 Prompt 開始調整
系列文
30 天從資料處理、分析到生成式 AI 的整合應用與實作學習10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言